home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / video / thrust-s.53 / thrust-s / thrust / src / thrust.h < prev   
C/C++ Source or Header  |  1995-11-05  |  7KB  |  267 lines

  1.  
  2. /* Written by Peter Ekberg, peda@lysator.liu.se */
  3.  
  4. #ifndef THRUST_H
  5. #define THRUST_H
  6.  
  7. /* The speed of the game. Gravity and thrust is affected.
  8.    Don't try too large values. 256 is what it used to
  9.    be in the good old days. */
  10.  
  11. #define SPEED 180
  12.  
  13. /* Uncomment the following define if you have an old version of
  14.    svgalib (i.e version < 1.2.8) */
  15. /*
  16. #define SCANCODE_P 25
  17. */
  18.  
  19. #include <vga.h>
  20. #include <vgagl.h>
  21.  
  22.  
  23.  
  24. #define VGAMODE G320x200x256
  25.  
  26. #define BBILDX    (41)
  27. #define BBILDY    (23)
  28. #define PBILDX    (BBILDX*8)
  29. #define PBILDY    (BBILDY*8)
  30. #define PSCRX    (PBILDX-8)
  31. #define PSCRY    (PBILDY-8)
  32.  
  33. #define incr(x,max,return) \
  34. { \
  35.     (x)++; \
  36.     if((x)>=(max)) \
  37.       (x)=(return); \
  38. }
  39. #define decr(x,min,return) \
  40. { \
  41.     (x)--; \
  42.     if((x)<(min)) \
  43.       (x)=(return)-1; \
  44. }
  45.  
  46. #define gcenter(y,s) (printgs(160-(gstrlen(s)>>1), (y), (s)))
  47.  
  48. typedef enum { INST, PLAY, HI, ABOUT, END, NOTHING, DEMO } options;
  49.  
  50. typedef unsigned char byte;
  51. typedef unsigned int word;
  52. typedef unsigned long dword;
  53.  
  54. struct bulletdef {
  55.   int life,x,y,vx,vy,dir,owner;
  56. };
  57. typedef struct bulletdef bullet;
  58. struct fragmentdef {
  59.   int life,x,y,vx,vy;
  60. };
  61. typedef struct fragmentdef fragment;
  62. struct thingdef    {
  63.   int alive,px,py,x,y,type,score;
  64.   void *data;
  65. };
  66. typedef struct thingdef thing;
  67. extern word nrthings;
  68. struct sliderdef {
  69.   int type,x1,y1,x2,y2,dir,active,stage,count,match;
  70.   struct sliderdef *next;
  71. };
  72. extern word nrsliders;
  73. typedef struct sliderdef slider;
  74. struct buttondatadef {
  75.   int major;
  76.   int tag;
  77.   slider *sliders;
  78. };
  79. typedef struct buttondatadef buttondata;
  80. struct restartpointdef {
  81.   word x, y;
  82. };
  83. extern word nrrestartpoints;
  84. typedef struct restartpointdef restartpoint;
  85. struct barrierdef {
  86.   word x, y;
  87.   restartpoint *restart;
  88. };
  89. extern word nrbarriers;
  90. typedef struct barrierdef barrier;
  91.  
  92. extern unsigned char intro[];
  93. extern unsigned char bin_blocks[];
  94. extern unsigned char bin_ship[];
  95. extern unsigned char bin_shield[];
  96. extern unsigned char bin_colors[];
  97. extern unsigned char bin_bullets[];
  98. extern unsigned char bin_demomoves[];
  99. #define LEVELS (4)
  100. extern char *level1[];
  101. extern char *level2[];
  102. extern char *level3[];
  103. extern char *level4[];
  104.  
  105. extern void putscr(int x,int y);
  106. extern void putblock(int x, int y, byte *source);
  107. extern void writeblock(word bx, word by, byte block);
  108. extern void drawship(word bx, word by, byte *ship, byte *storage);
  109. extern void undrawship(word bx, word by, byte *storage);
  110. extern void drawsquare(word bx, word by,
  111.                byte *object, byte *storage, byte deltax, byte deltay);
  112. extern void undrawsquare(word bx, word by,
  113.              byte *storage, byte deltax, byte deltay);
  114. extern word testcrash(byte *object, byte *storage, word len, byte shield);
  115. extern void fadepalette(word first, word last, Palette *RGBtable,
  116.             word fade, word flag);
  117. extern void setmargin(byte color, byte flag);
  118. extern byte *bild;
  119.  
  120. extern byte *bulletmap;
  121. extern Palette *palette;
  122. extern byte *blocks;
  123. extern byte *ship;
  124. extern byte *shieldship;
  125. extern byte *bana;
  126. extern byte *fuelmap;
  127. extern byte *loadmap;
  128. extern byte *shipstorage;
  129. extern byte *bulletstorage;
  130. extern byte *fragmentstorage;
  131. extern byte *fuelstorage;
  132. extern byte *loadstorage;
  133. extern byte *wirestorage;
  134.  
  135. #define maxbullets (64)
  136. extern bullet bullets[maxbullets];
  137. #define maxfragments (512)
  138. extern fragment fragments[maxfragments];
  139. #define maxthings (32)
  140. extern thing things[maxthings];
  141. #define maxsliders (32)
  142. extern slider sliders[maxsliders];
  143. #define maxbarriers (512)
  144. extern barrier barriers[maxbarriers];
  145. #define maxrestartpoints (16)
  146. extern restartpoint restartpoints[maxrestartpoints];
  147.  
  148. extern word spacestation;
  149. extern word ssx,ssy,scount;    /* Spacestation-variables */
  150. extern word ssblip;
  151.  
  152. #define maxlenx ((word)BBILDX*12) /*max 48 skΣrmar a 41*23 tecken a */
  153. #define maxleny ((word)BBILDY*4) /* 8*8 pixels a 8 bitar, dvs. 3274752 bytes.*/
  154.  
  155. extern word lenx; /* Banans max i x-len, anvΣnds senare till den aktuella */
  156. extern word leny; /* Banans max i y-len, storleken pσ banan.SΣtts i readbana */
  157. extern word lenx3,leny3;
  158.  
  159. extern int sinus[32];
  160. extern int sinus2[1024];
  161. extern int arcsinus[25];
  162.  
  163. extern int alpha,deltaalpha;
  164. extern word loaded,loadcontact,loadpointshift;
  165. extern int loadpoint;
  166. extern int countdown;
  167. extern word crash,shoot,repetetive;
  168. extern word refueling;
  169. extern int speedx,speedy;
  170. extern long absspeed,oldabs;
  171. extern int kdir,dir;
  172. extern int shipdx,shipdy;
  173. extern int x,y;
  174. extern int pixx,pixy;
  175. extern int pblockx,pblocky;
  176. extern int vx,vy;
  177. extern int bildx,bildy;
  178. extern int bblockx,bblocky;
  179. extern int loadbx,loadby;
  180. extern int gravity;
  181. extern int score;
  182. extern byte shield;
  183. extern byte colorr, colorg, colorb;
  184.  
  185. void newslider(int x, int y, int type);
  186. void animatesliders(void);
  187. int majorbutton(int button);
  188. int closestbutton(int x, int y);
  189. void newthing(int x, int y, int px, int py, int type, void *data);
  190. void deletething(thing *tp, int dx, int dy, int sx, int sy);
  191. int insideblock(int blockx, int blocky,
  192.         int pblockx, int pblocky, int sx, int sy);
  193. int insidepixel(int x, int y, int pixx, int pixy, int sx, int sy);
  194. int readbana(char **ptr);
  195. void releasebana(void);
  196. void updateborder(int pblockx, int pblocky,
  197.           int bblockx, int bblocky, int vx, int vy);
  198. word crashtype(word type);
  199. int resonablefuel(int x, int y, int l);
  200. int closestfuel(int x, int y);
  201. void hit(word x, word y, word crash, word owner);
  202. void bunkerfire(thing *b);
  203. void turnship();
  204. void makefuelmap(dword *fuelmap);
  205. int initmem();
  206. void inithardware();
  207. void initscreen();
  208. void restorehardware();
  209. void restoremem();
  210. void drawteleport();
  211. word drawshuttle();
  212. void initgame(int round, int reset, int xblock, int yblock);
  213. int inloadcontact(int x, int y);
  214. void bunkerfirebullets();
  215. void drawfuel(int fuel);
  216. void drawload(int flag);
  217. void drawspacestationblip();
  218. void drawfuellines();
  219. void undrawfuellines();
  220. void undrawshuttle();
  221. int killdyingthings();
  222. void explodething(thing *thingptr);
  223. void explodeship(void);
  224. void newbullet(word x, word y, int vx, int vy, word dir, int owner);
  225. void movebullets();
  226. void wrapbullets();
  227. void unwrapbullets();
  228. void drawbullets();
  229. void undrawbullets();
  230. void newfragment(word x, word y);
  231. void movefragments();
  232. void wrapfragments();
  233. void unwrapfragments();
  234. void drawfragments();
  235. void undrawfragments();
  236. word livefragments();
  237. void savegraphics(int x, int y);
  238. restartpoint *atbarrier(word bx, word by);
  239.  
  240. void printgc(word offset, byte ch);
  241. int printgs(int x, int y, char *string);
  242. int readgs(int x, int y, char string[], int maxc, int maxp, char flag);
  243. int gstrlen(char *string);
  244. extern byte chcolor, chpaper, chflag;
  245.  
  246. #define HIGHSCORES (5)
  247. typedef struct {
  248.   char name[40];
  249.   int score;
  250. } highscoreentry;
  251. int inithighscorelist(void);
  252. char *standardname(void);
  253. int ahighscore(int score);
  254. void inserthighscore(char *name, int score);
  255. void writehighscores(void);
  256. extern highscoreentry highscorelist[HIGHSCORES];
  257.  
  258. extern byte font[256][6];
  259.  
  260. #define min(x,y) \
  261.  (((x)<(y))?(x):(y))
  262.  
  263. #define max(x,y) \
  264.  (((x)<(y))?(y):(x))
  265.  
  266. #endif /* THRUST_H */
  267.